
#pragma once

#include <string>

enum class EquipmentActionType {
	modifier,
	summon,
	count
};

enum class EquipmentActionTriggerType {
	on_begin,
	on_attack,
	on_kill,
	on_death,
	on_raise,
	count
};

enum class EquipmentActionTargetType {
	wearer,
	front_units,
	melee_units,
	all_units,
	around_units,
	squad_units,
	our_units,
	front_line_enemy,
	all_enemy,
	count
};

enum class EquipmentActionTimeMode {
	instant,
	delay,
	repeat,
	count
};

enum class EquipmentActionModifyProperty {
	defense,
	reload_time,
	casting_time,
	range,
	slash_attack,
	blunt_attack,
	piercing_attack,
	explosion_attack,
	fire_attack,
	ice_attack,
	poison_attack,
	thunder_attack,
	dark_attack,
	holy_attack,
	slash_resist,
	blunt_resist,
	piercing_resist,
	explosion_resist,
	fire_resist,
	ice_resist,
	poison_resist,
	thunder_resist,
	dark_resist,
	holy_resist,
	count
};

enum class EquipmentActionSelectionType {
	all,
	specified,
	other,
	count
};

struct EquipmentAction {
	EquipmentActionType actionType;
	EquipmentActionTriggerType triggerType;
	EquipmentActionTargetType targetType;
	EquipmentActionTimeMode timeMode;
	EquipmentActionModifyProperty modifyProperty;
	EquipmentGenre creature;
	EquipmentActionSelectionType selectionType;
	int time;
	int value;
	int ticks;

	EquipmentAction() {
		memset(this, 0, sizeof(EquipmentAction));
	}
};